Pandas でのアウトオブコア処理
Pandas の弱点
Pandas はデータ分析や機械学習での前/後処理などで強力なツールであるのは間違いありませんが、オンメモリで動作するという弱点があります。そのため、データ規模が大きくなるとメモリが枯渇して処理できないような場合があります。(1千万行でおよそ10GBのメモリが必要)
また、シングルコアでの動作となるため、大規模データでは処理速度が問題となることがあります。
テラバイトのデータに対して工学系処理をPandasで実行することを考えてみます。 このようなタスク処理は、数千コアを扱える Spark を使用すると数分程度で完了できますが、Pandas はシングルコアでの実行になるため、昼夜を問わず何日も続く可能性があります。
これら、Pandas は10年を超える歴史をもつプロジェクトであるがゆえに、そのコードが複雑になっていて最適化が難しいというのが理由のひとつです。
データをデータベースやストレージに保持しておき、部分的に処理を繰り返して、全体を処理するといった手順が必要になります。
このような処理は、アウトオブコア(Out-of-Core)処理 と言われます。